package com.hexun.es.service;

import com.alibaba.fastjson.JSONObject;
import com.hexun.es.model.Person;

import java.util.List;
import java.util.Map;

/**
 * @description:ES接口
 * @author:yrw
 * @date 2018/11/20
 */
public interface EsService {

    /**
     * 构建索引
     * @param index
     * @return
     */
    boolean createIndex(String index);

    /**
     * 删除索引
     * @param index
     * @return
     */
    boolean deleteIndex(String index);

    /**
     * 查询数据
     * @param index 索引<----->关系型数据库
     * @param type  类型<----->关系型数据表
     * @param id    数据ID<----->id
     * @return
     */
    Map<String, Object> searchById(String index, String type, String id);

    /**
     * 更新数据
     *
     * @param data  添加的数据类型 json格式的
     * @param index 索引<----->关系型数据库
     * @param type  类型<----->关系型数据表
     * @param id    数据ID<----->id
     * @return
     */
    void updateById(JSONObject data, String index, String type, String id);

    /**
     * 添加数据
     *
     * @param data  添加的数据类型 json格式的
     * @param index 索引<----->关系型数据库
     * @param type  类型<----->关系型数据表
     * @param id    数据ID<----->id
     * @return
     */
    String addData(JSONObject data, String index, String type, String id);

    /**
     * 通过ID删除数据
     *
     * @param index 索引，类似数据库
     * @param type  类型，类似表
     * @param id    数据ID
     */
    void deleteById(String index, String type, String id);

    /**
     * 判断索引是否存在
     *
     * @param index
     * @return
     */
    boolean isIndexExist(String index);

    /**
     * 查询
     * @param pageNo 当前页
     * @param pageSize 一页多少记录
     * @param fieldSort 排序字段
     * @param sortOrder 升序还是降序
     * @param p
     * @return
     */
    List<Map<String,Object>> searchPerson(Integer pageNo,Integer pageSize,String fieldSort,String sortOrder,Person p);
}
